<!--
 * @Description:
 * @version:
 * @Author: 尹鹏孝
 * @Date: 2023-03-14 08:48:15
 * @LastEditors: 尹鹏孝
 * @LastEditTime: 2023-03-15 10:46:46
-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>http相关技术</title>
</head>
<body>
http://超文本传输协议。
tcp/ip通讯协议。
uri和url区别：一个是统一资源标识符，一个是统一资源定位符

http：特点：无状态。协议和事物之间没有记忆能力，不会记住之前的状态，
灵活：允许任意文件类型传输，类型用content-type标记
简单快捷：请求只需类型路径和参数
http:request请求：
请求行：请求类型，请求资源 定位，以及使用的http版本
请求头部：第一行之后的部分，用来说明服务器要是用的附加信息
博阿凯目的地，客户端类型，接收数据类型，相应数据类型，
第三部分空行
第四部分请求数据也叫请求主体，可以添加任意其他数据

http的response:
响应状态 ：
状态:http/1.1 200 ok
消息头:date 20190120gmt
相应详细信息:content-type/html;charset=ISO-8859-1

http状态码：
1XXX:消息已经接收到，继续处理
2xxx:成功请求并接收到。
3xx:重定向，需要进一步操作
4xx:客户端错误，无法请求或者实现
5xxx:服务端错误，未能实现合法请求。

浏览器地址栏输入一个url，背后发生了什么？
1、浏览器先把地址去请求dns服务器，进行域名和地址的关联，
2、解析出ip后，会和ip地址的服务器建立一个TCP连接
3、浏览器会发出http请求，包括请求头的类型，消息类型，请求主体内容，
4、服务器会接收到请求类型，并通知浏览器，接收大 的结果，这就是相应类型tcp三次握手，您那有这个内容吗？我这有，你要看看吗？嗯我要看看，给你，收到了，tcp握手三次其实是会话三次保证内容能释放，
5、服务器释放tcp连接，浏览器释放tcp连接
6、浏览器展示内容
tcp三次握手和四次挥手
三次握手是建立连接，四次挥手是为了关闭连接

client发送Fin，关闭客户端到服务器的数据传输，client进入fin_wait_1
第二次挥手：server收到Fin后，发送一个ack给client，确认序号是收到序号——1，进入wait状态
第三次挥手，server在发送一个fin关闭客户端和服务端的数据传输，服务器进入last_ack
第四次挥手，client收到FIn后进入time_wait状态，发送一个ack给server，确认序号为收到序号+1，server进入close状态，完成四次挥手

建立连接需要fin和ack但是是一起发出的。
关闭连接需要fin和ack分开发送告知对方关闭了不用继续传输数据。

post和get区别
post发送数据格式和get不同，主要是类型，get的数据携带在url里用?以后的部分，通过key=value用&连接。由于浏览器地址栏长度有限制所以get请求会受到链接地址长度影响而post则没有这个问题
因为get请求是url会暴露请求敏感数据，下次访问如果没有清除历史记录还会被展示的地址栏，不是很安全。
再读取数据时候，get的内容全部从url来读取，post除了要读取url还要读取请求body的数据。
请求类型：get\post\head\put\delete\options\connect\trace\
options：允许客户端查看服务端的性能
trace:回显服务器收到的请求，主要用于诊断
connect:预留的改为管道方式代理服务
head:用于获取报头






</body>
</html>